CustomDocumentProperties

Otázka od: Tomas Folprecht

18. 9. 2002 11:29

Dobry den,

rad bych pozadal o radu.
Nevim, jak ve wordovskem dokumentu ovladanem pres TWordDocument z Delphi 5
nastavovat vlastnosti dokumentu, jako nazev,
autor, spolecnost....
TWordDocument obsahuje "CustomDocumentProperties" a
"BuiltInDocumentProperties", to bude asi ono, ale vubec nevim, jak k
nim pristupovat. Jsou typu IDispatch a ja bohuzel nevim, co to je.

Dekuji za kazdou radu

Tomas

Odpovedá: Tomas Folprecht

23. 9. 2002 15:23

Prominte, ze se znovu pripominam, opravdu mi nikdo nemuzete ani malinko
napovedet, kterym smerem se ubirat?
Moc by mi to pomohlo.

Tomas

> -----Original Message-----
> From: Tomas Folprecht [mailto:tomas@apkfolprecht.cz]
> Sent: Wednesday, September 18, 2002 11:53 AM
>
> Dobry den,
>
> rad bych pozadal o radu.
> Nevim, jak ve wordovskem dokumentu ovladanem pres TWordDocument z Delphi 5
nastavovat vlastnosti dokumentu,
> jako nazev, autor, spolecnost....
> TWordDocument obsahuje "CustomDocumentProperties" a
"BuiltInDocumentProperties", to bude asi ono, ale vubec
> nevim, jak k nim pristupovat. Jsou typu IDispatch a ja bohuzel nevim, co to
je.
>
> Dekuji za kazdou radu
>
> Tomas Folprecht

Odpovedá: Martin Schayna

23. 9. 2002 17:08

----- Original Message -----
From: "Tomas Folprecht" <tomas@apkfolprecht.cz>
> TWordDocument obsahuje "CustomDocumentProperties" a
> "BuiltInDocumentProperties", to bude asi ono, ale vubec nevim, jak k
> nim pristupovat. Jsou typu IDispatch a ja bohuzel nevim, co to je.

Z napovedy pro Microsoft Visual Basic pro Word:

BuiltInDocumentProperties Property
                
Returns a DocumentProperties collection that represents all the
built-in document properties for the specified document. Read-only.

To return a single DocumentProperty object that represents a specific
built-in document property, use BuiltinDocumentProperties(index),
where index is one of the following WdBuiltInProperty constants.

wdPropertyAppName
wdPropertyAuthor
wdPropertyBytes
wdPropertyCategory
wdPropertyCharacters
wdPropertyCharsWSpaces
wdPropertyComments
wdPropertyCompany
wdPropertyFormat
wdPropertyHiddenSlides
wdPropertyHyperlinkBase
wdPropertyKeywords
wdPropertyLastAuthor
wdPropertyLines
wdPropertyManagerwdPropertyMMClips
wdPropertyNotes
wdPropertyPages
wdPropertyParas
wdPropertyRevision
wdPropertySecurity
wdPropertySlides
wdPropertySubject
wdPropertyTemplate
wdPropertyTimeCreated
wdPropertyTimeLastPrinted
wdPropertyTimeLastSaved
wdPropertyTitle
wdPropertyVBATotalEdit
wdPropertyWords

Use the CustomDocumentProperties property to
return the collection of custom document properties.

Martin Schayna

Odpovedá: Tomas Folprecht

24. 9. 2002 7:08

Ja mnohokrat dekuji za pomoc. Tohle jsem jiz nasel take, ale problem je v tom,
jak k se k tomu dostat z Delphi. Tam to
tak jednoduche neni.

Tomas

> -----Original Message-----
> From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
> Behalf Of Martin Schayna
> Sent: Monday, September 23, 2002 4:43 PM
> To: delphi-l@clexpert.cz
> Subject: Re: CustomDocumentProperties
>
>
> ----- Original Message -----
> From: "Tomas Folprecht" <tomas@apkfolprecht.cz>
> > TWordDocument obsahuje "CustomDocumentProperties" a
> > "BuiltInDocumentProperties", to bude asi ono, ale vubec nevim, jak k
> > nim pristupovat. Jsou typu IDispatch a ja bohuzel nevim, co to je.
>
> Z napovedy pro Microsoft Visual Basic pro Word:
>
> BuiltInDocumentProperties Property
>
> Returns a DocumentProperties collection that represents all the
> built-in document properties for the specified document. Read-only.
>
> To return a single DocumentProperty object that represents a specific
> built-in document property, use BuiltinDocumentProperties(index),
> where index is one of the following WdBuiltInProperty constants.
>
> wdPropertyAppName
> wdPropertyAuthor
> wdPropertyBytes
> wdPropertyCategory
> wdPropertyCharacters
> wdPropertyCharsWSpaces
> wdPropertyComments
> wdPropertyCompany
> wdPropertyFormat
> wdPropertyHiddenSlides
> wdPropertyHyperlinkBase
> wdPropertyKeywords
> wdPropertyLastAuthor
> wdPropertyLines
> wdPropertyManagerwdPropertyMMClips
> wdPropertyNotes
> wdPropertyPages
> wdPropertyParas
> wdPropertyRevision
> wdPropertySecurity
> wdPropertySlides
> wdPropertySubject
> wdPropertyTemplate
> wdPropertyTimeCreated
> wdPropertyTimeLastPrinted
> wdPropertyTimeLastSaved
> wdPropertyTitle
> wdPropertyVBATotalEdit
> wdPropertyWords
>
> Use the CustomDocumentProperties property to
> return the collection of custom document properties.
>
> Martin Schayna
>

Odpovedá: ing. Jan Fiala

24. 9. 2002 9:11

Zkus tohle:

var
 docprop: Variant;
begin
 docprop := WordDocument.CustomDocumentProperties;

 pak uz k tomu pristupujes pres
 docprop.
 
--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

24.9.2002 Tomas Folprecht:
> Ja mnohokrat dekuji za pomoc. Tohle jsem jiz nasel take, ale problem
> je v tom, jak k se k tomu dostat z Delphi. Tam to tak jednoduche
> neni.

Odpovedá: Tomas Folprecht

24. 9. 2002 10:45

Tomu vubec nerozumim. Porad neumim nastavovat jednotlive wordowske proprty.
Neumim ani napsat kod, ktery by se tvaril,
ze to bude delat a sel by zkompilovat.
Predstavovat bych si, ze napisu neco jako:

 WordDocument.CustomDocumentProperties('Císlo dokumentu') := 123

ale to jsem teda dost naivni.

Tomas

> -----Original Message-----
> From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On Behalf
Of ing. Jan Fiala
> Sent: Tuesday, September 24, 2002 8:20 AM
> To: delphi-l@clexpert.cz
> Subject: Re: CustomDocumentProperties
>
>
> Zkus tohle:
>
> var
> docprop: Variant;
> begin
> docprop := WordDocument.CustomDocumentProperties;
>
> pak uz k tomu pristupujes pres
> docprop.
>
> --
> ing. Jan Fiala
> mailto:jan.fiala@iol.cz
>
> 24.9.2002 Tomas Folprecht:
> > Ja mnohokrat dekuji za pomoc. Tohle jsem jiz nasel take, ale problem
> > je v tom, jak k se k tomu dostat z Delphi. Tam to tak jednoduche
> > neni.
>
>
>

Odpovedá: ing. Jan Fiala

24. 9. 2002 11:13


24.9.2002 Tomas Folprecht:
> Tomu vubec nerozumim. Porad neumim nastavovat jednotlive wordowske proprty.
Neumim ani napsat kod, ktery by se tvaril,
> ze to bude delat a sel by zkompilovat.
> Predstavovat bych si, ze napisu neco jako:

> WordDocument.CustomDocumentProperties('Císlo dokumentu') := 123

> ale to jsem teda dost naivni.

Ten kod dole nechodi ?
Proste musis interface priradit do nejake promenne a s ni pak
pracovat. Primo to nejde.


>> Zkus tohle:
>>
>> var
>> docprop: Variant;
>> begin
>> docprop := WordDocument.CustomDocumentProperties;
>>
>> pak uz k tomu pristupujes pres
>> docprop.
>>

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

Odpovedá: Jan Sebelík

24. 9. 2002 17:42

> Odesílatel: Tomas Folprecht <tomas@apkfolprecht.cz>
> Ja mnohokrat dekuji za pomoc. Tohle jsem jiz nasel take, ale problem je v
tom, jak k se k tomu dostat z Delphi. Tam to
> tak jednoduche neni.

Ja tedy vubec neznam interface do Wordu. Ale pokud dostanu jakykoli interface
(staci IDispatch, CreateOLEObject), tak uz volam vsechny metody bez problemu.
(No, pokud je to jenom trochu mozne, tak bych se vyhnul pouziti typu Variant.)

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================

Odpovedá: Tomas Folprecht

24. 9. 2002 14:49

No dobra, mam odkaz na Word.....Properties v promenne typu Variant, ale to je
nejaka Visual Basicovska Collection. Jak
z ni vytahnout jeden prvek?
Asi jsem dost natvrdly, co?

Tomas

> -----Original Message-----
> From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On Behalf
Of ing. Jan Fiala
> Sent: Tuesday, September 24, 2002 11:47 AM
> To: delphi-l@clexpert.cz
> Subject: Re: CustomDocumentProperties
>
>
>
> 24.9.2002 Tomas Folprecht:
> > Tomu vubec nerozumim. Porad neumim nastavovat jednotlive wordowske proprty.
Neumim ani napsat kod, ktery by
> se tvaril,
> > ze to bude delat a sel by zkompilovat.
> > Predstavovat bych si, ze napisu neco jako:
>
> > WordDocument.CustomDocumentProperties('Císlo dokumentu') := 123
>
> > ale to jsem teda dost naivni.
>
> Ten kod dole nechodi ?
> Proste musis interface priradit do nejake promenne a s ni pak
> pracovat. Primo to nejde.
>
>
> >> Zkus tohle:
> >>
> >> var
> >> docprop: Variant;
> >> begin
> >> docprop := WordDocument.CustomDocumentProperties;
> >>
> >> pak uz k tomu pristupujes pres
> >> docprop.
> >>
>
> --
> ing. Jan Fiala
> mailto:jan.fiala@iol.cz

Odpovedá: ing. Jan Fiala

24. 9. 2002 17:05

K te kolekci pristupujes prave pres tu promennou. Takze misto abys
psal
WordDocument.CustomDocumentProperties()
zkus napsat
promenna.neco(....)

V lepsim pripade ti to po napsani tecky delphi nabidne properties

--
Jan Fiala
mailto:jan.fiala@iol.cz

24.9.2002 Tomas Folprecht:
> No dobra, mam odkaz na Word.....Properties v promenne typu Variant, ale to
je nejaka Visual Basicovska Collection. Jak
> z ni vytahnout jeden prvek?
> Asi jsem dost natvrdly, co?

Odpovedá: Tomas Folprecht

24. 9. 2002 17:21

Jestli myslis treba takhle:

var V,XX:Variant;
begin
  ...
  V:=WDoc.CustomDocumentProperties;
  XX:=V.Item(1);


tak to nechodi.


Nebo jsi to myslel jinak? Nevim totiz, co napsat misto "promenna.neco".
Uz se tim trapim tri dny, zatracene.

Nevite nahodou nekdo, na co je procedure Invoke ? Mam dojem, ze to bude nejak
souviset.

Tomas





> -----Original Message-----
> From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On Behalf
Of ing. Jan Fiala
> Sent: Tuesday, September 24, 2002 12:46 PM
> To: delphi-l@clexpert.cz
> Subject: Re: CustomDocumentProperties
>
>
> K te kolekci pristupujes prave pres tu promennou. Takze misto abys
> psal
> WordDocument.CustomDocumentProperties()
> zkus napsat
> promenna.neco(....)
>
> V lepsim pripade ti to po napsani tecky delphi nabidne properties
>
> --
> Jan Fiala
> mailto:jan.fiala@iol.cz
>
> 24.9.2002 Tomas Folprecht:
> > No dobra, mam odkaz na Word.....Properties v promenne typu Variant, ale
to je nejaka Visual Basicovska
> Collection. Jak
> > z ni vytahnout jeden prvek?
> > Asi jsem dost natvrdly, co?
>
>
>

Odpovedá: Milan Tomes

25. 9. 2002 8:35

var
  DocProc: DocumentProperties;
  i: integer;
begin
  DocProp := WDoc.CustomDocumentProperties as DocumentProperties;
  for i := 1 to DocProc.Count do //tady si nejsem jisty indexovanim toho
collection - mozna je to od 0
    DocProc........
  DocProc := nil;
end;

> var V,XX:Variant;
> begin
> ...
> V:=WDoc.CustomDocumentProperties;
> XX:=V.Item(1);
>
>
> tak to nechodi.
>
> Nevite nahodou nekdo, na co je procedure Invoke ? Mam dojem, ze
> to bude nejak souviset.

Invoke je metoda rozhrani IDispatch a souvisi s automation objekty (slouzi
pro vyvolavani jejich metod). Vice v dokumentaci pro COM

HTH

S pozdravem

Milan Tomes
mailto:milan.tomes@haida.cz

Odpovedá: Tomas Folprecht

25. 9. 2002 12:51

Neexistuje zadny typ DocumentProperties ani TDocumentProperties.

Musim se jeste moooc ucit.
Zkousejte to dal, treba me k reseni dokopete.
Kazdopadne dekuju za solidaritu

Tomas








> -----Original Message-----
> From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On Behalf
Of Milan Tomes
> Sent: Wednesday, September 25, 2002 8:17 AM
> To: delphi-l@clexpert.cz
> Subject: RE: CustomDocumentProperties
>
>
> var
> DocProc: DocumentProperties;
> i: integer;
> begin
> DocProp := WDoc.CustomDocumentProperties as DocumentProperties;
> for i := 1 to DocProc.Count do //tady si nejsem jisty indexovanim toho
> collection - mozna je to od 0
> DocProc........
> DocProc := nil;
> end;
>
> > var V,XX:Variant;
> > begin
> > ...
> > V:=WDoc.CustomDocumentProperties;
> > XX:=V.Item(1);
> >
> >
> > tak to nechodi.
> >
> > Nevite nahodou nekdo, na co je procedure Invoke ? Mam dojem, ze
> > to bude nejak souviset.
>
> Invoke je metoda rozhrani IDispatch a souvisi s automation objekty (slouzi
> pro vyvolavani jejich metod). Vice v dokumentaci pro COM
>
> HTH
>
> S pozdravem
>
> Milan Tomes
> mailto:milan.tomes@haida.cz
>
>
>

Odpovedá: Milan Tomes

25. 9. 2002 17:51

A mas naimportovanou typovou knihovnu ??? Kdyz naomportujes knihovnu
MSWORD9.OLB tak tam tento typ existuje !!!

S pozdravem

Milan Tomes
mailto:milan.tomes@haida.cz

> Neexistuje zadny typ DocumentProperties ani TDocumentProperties.
> Tomas

Odpovedá: Martin Schayna

25. 9. 2002 17:24

----- Original Message -----
From: "Tomas Folprecht" <tomas@apkfolprecht.cz>
> Neexistuje zadny typ DocumentProperties ani TDocumentProperties.

DocumentProperties je typ z typove knihovny Office,
tedy nikoliv z typove knihovny Word. Mozna bude
treba toho vic do Delphi naimportovat.

Napr. ve Wordu tohle funguje normalne:

Public Sub Test()
  Dim i As Integer
  ActiveDocument.CustomDocumentProperties.Add "Moje", False,
msoPropertyTypeString, "Hodnota"
  For i = 1 To ActiveDocument.CustomDocumentProperties.Count
    MsgBox ActiveDocument.CustomDocumentProperties.Item(i).Value
  Next
End Sub

Martin Schayna

Odpovedá: Milan Tomes

26. 9. 2002 7:00

Omlouvam se, mas pravdu........
Jen dodam, ze prislusna typova knihovna (MSO9.dll) se naimportuje i v
pripade, ze importujes knihovnu Wordu (vznikne soubor Office_TLB.pas)

S pozdravem

Milan Tomes
mailto:milan.tomes@haida.cz

> DocumentProperties je typ z typove knihovny Office,
> tedy nikoliv z typove knihovny Word. Mozna bude
> treba toho vic do Delphi naimportovat.
> Martin Schayna

Odpovedá: Tomas Folprecht

26. 9. 2002 17:12

Aha, ten typ je v unite Office97.pas, takze stacilo ji pridat do uses.

Uz to lze zkompilovat, vypada to smysluplne, ale na radce:

DocProps:= WDoc.CustomDocumentProperties as DocumentProperties;

to vyhodi chybu EIntfCastError "Interface not supported".

Pricemz ve Visual Basicovskym helpu jsem si precetl, ze
Document.CustomDocumentProperties je typu DocumentProperties.

Co s tím?


Tomas Folprecht




> -----Original Message-----
> From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On Behalf
Of Milan Tomes
> Sent: Wednesday, September 25, 2002 2:02 PM
> To: delphi-l@clexpert.cz
> Subject: RE: CustomDocumentProperties
>
>
> A mas naimportovanou typovou knihovnu ??? Kdyz naomportujes knihovnu
> MSWORD9.OLB tak tam tento typ existuje !!!
>
> S pozdravem
>
> Milan Tomes
> mailto:milan.tomes@haida.cz
>
> > Neexistuje zadny typ DocumentProperties ani TDocumentProperties.
> > Tomas
>
>
>

Odpovedá: ing. Jan Fiala

26. 9. 2002 13:07

Zkus si tam doplnit "T" pred to DocumentProperties, cili
DocProps:= WDoc.CustomDocumentProperties as TDocumentProperties;

K tem svym predchozim radam, skutecne jsem nemohl tusit, ze nemas v
USES unitu knihovny  

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

26.9.2002 Tomas Folprecht:
> Aha, ten typ je v unite Office97.pas, takze stacilo ji pridat do uses.
> Uz to lze zkompilovat, vypada to smysluplne, ale na radce:
> DocProps:= WDoc.CustomDocumentProperties as DocumentProperties;
> to vyhodi chybu EIntfCastError "Interface not supported".

Odpovedá: Tomas Folprecht

27. 9. 2002 10:07

Kdepak:

Undeclared identifier: 'TDocumentProperties'.

Jdu badat dal.

Tomas Folprecht

PS: K te unite: kdyz jsem si dal na form komponentu TWordDocument, myslel jsem,
ze se tam doplni potrebne unity
automaticky. Zmylil jsem se. Ma chyba.

> -----Original Message-----
> From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On Behalf
Of ing. Jan Fiala
> Sent: Thursday, September 26, 2002 2:07 PM
> To: delphi-l@clexpert.cz
> Subject: Re: CustomDocumentProperties
>
>
> Zkus si tam doplnit "T" pred to DocumentProperties, cili
> DocProps:= WDoc.CustomDocumentProperties as TDocumentProperties;
>
> K tem svym predchozim radam, skutecne jsem nemohl tusit, ze nemas v
> USES unitu knihovny  
>
> --
> ing. Jan Fiala
> mailto:jan.fiala@iol.cz
>
> 26.9.2002 Tomas Folprecht:
> > Aha, ten typ je v unite Office97.pas, takze stacilo ji pridat do uses.
> > Uz to lze zkompilovat, vypada to smysluplne, ale na radce:
> > DocProps:= WDoc.CustomDocumentProperties as DocumentProperties;
> > to vyhodi chybu EIntfCastError "Interface not supported".
>
>
>